import Request from '@/utils/luch-request/index.js'
const http = new Request()
const timeFormat = (dateTime = null, formatStr = 'yyyy-mm-dd') =>  {
  let date;
  // 若传入时间为假值，则取当前时间
  if (!dateTime) {
    date = new Date();
  }
  // 若为unix秒时间戳，则转为毫秒时间戳（逻辑有点奇怪，但不敢改，以保证历史兼容）
  else if (/^\d{10}$/.test(dateTime?.toString().trim())) {
    date = new Date(dateTime * 1000);
  }
  // 若用户传入字符串格式时间戳，new Date无法解析，需做兼容
  else if (typeof dateTime === 'string' && /^\d+$/.test(dateTime.trim())) {
    date = new Date(Number(dateTime));
  }
  // 其他都认为符合 RFC 2822 规范
  else {
    // 处理平台性差异，在Safari/Webkit中，new Date仅支持/作为分割符的字符串时间
    date = new Date(typeof dateTime === 'string' ? dateTime.replace(/-/g, '/') : dateTime);
  }

  const timeSource = {
    y: date.getFullYear().toString(), // 年
    m: (date.getMonth() + 1).toString().padStart(2, '0'), // 月
    d: date.getDate().toString().padStart(2, '0'), // 日
    h: date.getHours().toString().padStart(2, '0'), // 时
    M: date.getMinutes().toString().padStart(2, '0'), // 分
    s: date.getSeconds().toString().padStart(2, '0'), // 秒
    // 有其他格式化字符需求可以继续添加，必须转化成字符串
  };

  for (const key in timeSource) {
    const [ret] = new RegExp(`${key}+`).exec(formatStr) || [];
    if (ret) {
      // 年可能只需展示两位
      const beginIndex = key === 'y' && ret.length === 2 ? 2 : 0;
      formatStr = formatStr.replace(ret, timeSource[key].slice(beginIndex));
    }
  }

  return formatStr;
}
export {
	http,
	timeFormat
}
http.setConfig((config) => {
	/* config 为默认全局配置*/
	config.baseURL = 'http://121.43.60.4:9500'; /* 根域名 */
	config.header = {
		'content-type': 'application/x-www-form-urlencoded'
	}
	return config
})
//请求前拦截
http.interceptors.request.use((config) => { // 可使用async await 做异步操作
	config.header = {
		...config.header,
	}
	//获取存储的token
	const token = uni.getStorageSync('token');
	config.header.token = token;
	const userInfo = uni.getStorageSync('userInfo');
	if(userInfo){
		config.params.openid = userInfo.openid
		config.params.session_key = userInfo.session_key
	}
	return config
}, config => { // 可使用async await 做异步操作
	return Promise.reject(config)
})
// 请求后拦截器
http.interceptors.response.use((response) => {
	return response
}, (response) => {
	//未登录时清空缓存跳转
	if (response.statusCode == 401) {
		uni.clearStorageSync();
		uni.navigateTo({
			url: "/pages/login/wechat"
		})
	}
	return Promise.reject(response)
})